#ifndef SPACECOL_H
#define SPACECOL_H
#include "treegen.h"
#include "block.h"
//#define ROH 2
//#define R 4

using namespace std;

class Artistic;
class TreeGen;
class Block;

class SpaceCol
{
public:
    SpaceCol();
    ~SpaceCol();
    virtual void generateMarkers() = 0;
    virtual void drawMarkers() = 0;

    // Diem's way: aux and term buds have the same V
    void populateBudD(Bud * b, int depth);
    void assignMarkersD(Bud* b);

    // Ben's way: aux and term buds have different Vs:
    void populateBudB(Bud * b, int depth);
    void assignMarkersB(Bud* b);

    virtual void addMarkers(double x, double y, double z) = 0;
    TreeGen * m_tree;
    int numBlock;
    Block * m_blocks;
    void cleanDeletedMarkers();
protected:
    //int numBlock;
    int numBuds;
    int BPR;
    int BPRSQ;
    float ROH, R;
    double blockSize; // size of the side of a block
};

#endif // SPACECOL_H
